export const baseUrl = ''
// 引入crypto-js库
import Crypto from './crypto.js';
const config = {
    baseUrl: baseUrl + '/api',
    loadingText: '加载中~',
    loadingTime: 2000,
    header: {
        Accept: 'application/json',
    }
}

const install = (Vue, vm) => {
    // 此为自定义配置参数，具体参数见上方说明
    Vue.prototype.$u.http.setConfig({
      ...config
    });
    // 请求拦截部分，如配置，每次请求前都会执行
    Vue.prototype.$u.http.interceptor.request = (config) => {
        console.log('config',config.header)
        // 让每个请求携带自定义 token 请根据实际情况自行修改
        config.header['clientId'] = Crypto.encrypt('HzMgVzjm9ujx7HsNJJz1r8YSIR620J')
        config.header['clientSecret'] = Crypto.encrypt('6NWSKln1OPRbEjM18tFWVmuF1ZbEES')
        config.header['sign'] = Crypto.encrypt('HzMgVzjm9ujx7HsNJJz1r8YSIR620J6NWSKln1OPRbEjM18tFWVmuF1ZbEES')
        config.header['accessToken'] = Crypto.encrypt(uni.getStorageSync('token'))
        return config;
    }

    // 响应拦截，如配置，每次请求结束都会执行本方法
    Vue.prototype.$u.http.interceptor.response = (res) => {
        console.log(res)
        if(res.code === 0) {
            // res为服务端返回值，可能有code，result等字段
            // 这里对res.result进行返回，将会在this.$u.post(url).then(res => {})的then回调中的res的到
            // 如果配置了originalData为true，请留意这里的返回值
            return res.data;
        } else if(res.code === 400) {
            // 假设201为token失效，这里跳转登录
            vm.$u.toast('登录过期, 请重新登录');
            setTimeout(() => {
                uni.reLaunch({
                    url: '/pages/user/login'
                })
            }, 1000)
            return false;
        } else {
            vm.$u.toast(res.msg);
            // 如果返回false，则会调用Promise的reject回调，
            // 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中，res为服务端的返回值
            return false;
        }
    }
}

export default {
    install
}